home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Libraries / SAT 2.1.2 / HeartQuest sample ƒ / sBonus.p < prev    next >
Encoding:
Text File  |  1994-06-02  |  1.8 KB  |  68 lines  |  [TEXT/PJMM]

  1. prite }
  2. { Handle-procedure, to be called once per iteration until the sprite dies }
  3. { Hittask-procedure (optional), for advanced collission handling. }
  4.  
  5. interface
  6.  
  7.     uses
  8.         SAT, sPoints, scores, SoundConst, GameGlobals;
  9.  
  10.     procedure InitBonus;
  11.     procedure SetupBonus (mp: SpritePtr);
  12.     procedure HandleBonus (me: SpritePtr);
  13.  
  14. implementation
  15.  
  16.     var
  17.         BonusFace: array[1..3] of FacePtr;
  18.  
  19.     procedure InitBonus;
  20.         var
  21.             ii: integer;
  22.             h: handle;
  23.     begin
  24.         for ii := 1 to 3 do
  25.             begin
  26.                 BonusFace[ii] := GetFace(127 + ii);
  27.             end;
  28.     end;
  29.  
  30.     procedure SetupBonus (mp: SpritePtr);
  31.         var
  32.             i: integer;
  33.     begin
  34.         i := rand(3) + 1;
  35.         mp^.face := BonusFace[i];
  36. {mp^.mask := Bonusmask[i];}
  37.  
  38.         if mp^.position.h < 300 then
  39.             mp^.speed.h := 5
  40.         else
  41.             mp^.speed.h := -5;
  42.         SetRect(mp^.hotRect, -13 + 16, -28 + 32, 13 + 16, 0 + 32);
  43.  
  44.         mp^.task := @HandleBonus;
  45.     end;
  46.  
  47.     procedure HandleBonus (me: SpritePtr);
  48.         var
  49.             mp: Spriteptr;
  50.     begin
  51.         if me^.kind <> -4 then
  52.             begin
  53.                 me^.task := nil; { Caught by the player! }
  54.                 addscore(50);
  55.                 mp := NewSprite(0, me^.position.h, me^.position.v, @SetupPoints);
  56.                 SATSoundPlay(jaSndH, 5, true);
  57.             end;
  58.  
  59.         me^.mode := me^.mode + 1;
  60.  
  61.         me^.position.h := me^.position.h + me^.speed.h;
  62.         if me^.position.h > gSAT.offSizeH then
  63.             me^.task := nil;
  64.         if me^.position.h < -32 then
  65.             me^.task := nil;
  66.     end;
  67.  
  68. end.